package com.pro01.backend.service;

import com.pro01.backend.mapper.UserInviteMapper;
import com.pro01.backend.pojo.PageResult;
import com.pro01.backend.pojo.UserInvite;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class UserInviteService {

    @Autowired
    private UserInviteMapper userInviteMapper;

    // 生成邀请码（现在可以不绑定用户）
    public String generateInvite(Long userId) {
        String inviteCode = UUID.randomUUID().toString().replace("-", "").substring(0, 10);
        UserInvite invite = new UserInvite();
        invite.setUserId(userId); // 可以为 null
        invite.setInviteCode(inviteCode);
        userInviteMapper.createInvite(invite);
        return inviteCode;
    }

    // 验证邀请码是否有效
    public boolean isInviteValid(String inviteCode) {
        return userInviteMapper.getValidInvite(inviteCode) != null;
    }

    // 使用邀请码
    public boolean useInvite(String inviteCode) {
        return userInviteMapper.markInviteAsUsed(inviteCode) > 0;
    }

    // 获取用户的邀请码列表
    public List<UserInvite> getUserInvites(Long userId) {
        return userInviteMapper.getInvitesByUserId(userId);
    }

    // 获取所有邀请码（包含无用户的邀请码）
    public List<UserInvite> getAllInvites() {
        return userInviteMapper.getAllInvites();
    }

    // 分页显示用户已兑换的邀请码
    public PageResult<UserInvite> getUserInvitesPaged(Long userId, int pageNum, int pageSize) {
        int offset = (pageNum - 1) * pageSize;
        List<UserInvite> records = userInviteMapper.getPagedInvites(userId, offset, pageSize);
        int total = userInviteMapper.countInvitesByUser(userId);
        return new PageResult<>(total, records);
    }

    // 显示用户生成的未使用的邀请码
    public List<UserInvite> getUnusedInvites(Long userId) {
        return userInviteMapper.getUnusedInvitesByUserId(userId);
    }

}
